const fs = require('fs');

/**
 * 常量设置
 */
module.exports={
    // api版本
    'version':'/api/v1/',
    'httpCode':{
        'OK'            : {code: 20000,message:'操作成功'},
        'ILLEGAL_TOKEN' : {code: 50008,message:'无效凭据'},
        'OTHER_LOGIN'   : {code: 50012,message:'已登陆'},
        'TOKEN_EXPIRE'  : {code: 50014,message:'登陆过期'},
        'PASS_ERROR'    : {code: 60204,message:'密码错误'},
        'ILLEGAL_PARAM' : {code: 60205,message:'无效参数'}
    },
    // sqlite 数据库位置
    'dbPath':'./data/cameras.db',
    http:{
        port            : 7000
    },
    sip:{
        version         : '2.0',
        udp             : true,   // 目前只实现了udp
        tcp             : true,
        useragent       : 'NODE GB28181 HTTPV1',
        authorize       : false
    },
    logger              : {
        path:'./sip.log'
    },
    /**
     * 在连的设备信息，并不一定与数据库同步,格式
     *  online:true,
        session:{realm:me.sipSetting.server_realm},
        version: sip版本号
        sumnum: 通道数
        password  : sip_command_password,
        deviceid  : deviceid,
        session   : {
          realm   : server_realm
        },
        sip_command_host  : uriObj.sip_command_host,
        sip_command_port  : uriObj.sip_command_port,
        play      : false, // 是否在播放     
        uri       : uriObj.uri
     */
    registry:{
        invites:{}
    },
    // 把registry保存到文件
    save:function(callback){
        let cache = [];
        let str = JSON.stringify(this.registry,function(key,value){
            if (typeof value === 'object' && value !== null) {
                if (cache.indexOf(value) !== -1) {
                    return;
                }
                cache.push(value);
            }
            return value;
        });
        fs.writeFile('./data/registry.data',str,callback);
    },
    // 从文件加载registry
    load:function(callback){
        let me=this;
        fs.readFile('./data/registry.data',(error,data)=>{
            if(error){
                callback(false);
            }else{
                console.log(typeof(data.toString()));
                console.log(data.toString());
                me.registry = JSON.parse(data.toString());

                callback(true);
            }
        });
    },
    rstring:function() { return Math.floor(Math.random()*1e6).toString(); },
    initUrl:function(url){
        this.zlmedia.remote = `http://${url}:9094/`;
        this.zlmedia.remoteTls = `http://${url}:9096/`;
        this.zlmedia.rtmp = `rtmp://${url}:9092/`;
        this.zlmedia.local= 'rtmp://localhost:9092/';
    },
    zlmedia:{
        url     : 'http://localhost:9094/',
        remote  : '',
        remoteTls:'',
        rtmp    : '',
        app     : 'rtp',
        rtpPort : [50000,50500]
    }
}